package com.txy.strmatch;

/**
 * 哈希匹配 时间复杂度O(m+n)   计算哈希是对子串的一次循环，计算match对主串一次循环
 */
public class RK {
    public static int strToHash(String src) {
        int hash = 0;
        for(int i=0;i<src.length();i++) {
            hash*=26; // 26进制，针对小写字母
            hash += src.charAt(i)-97;
        }
        return hash;
    }

    public static boolean isMatch(String main, String pattern) {
        int ph = strToHash(pattern);
        for(int i =0;i<=main.length()-pattern.length();i++)
            if(ph==strToHash(main.substring(i, i + pattern.length()))) {
                return true;
            }
        return false;
    }
}
